#ifndef LIDAR_PERPROCESS_H
#define LIDAR_PERPROCESS_H
#include <math.h>
#include <iomanip>
#include "common/data_type.h"
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
namespace perception
{
    namespace lidar_preprocess
    {
        template <typename T1, typename T2, typename T3>
        class LidarPreprocess
        {
        public:
            // virtual ~LidarPreprocess() {} // 只有子类继承与多态同时用的时候才用虚函数，否则不需要
            virtual void Process(typename pcl::PointCloud<T1>::Ptr &data_in, typename pcl::PointCloud<T2>::Ptr &data_out, T3 &config) = 0;
        };
        // class LidarPreprocessF
        // {
        // public:
        //     virtual ~LidarPreprocessF(){}; // 只有子类继承与多态同时用的时候才用虚函数，否则不需要
        //     virtual void LidarPreprocess *StartProcess() = 0;
        // };
    }
}
#endif